Projekt z analizy danych

Politechnika Poznańska

Kamila Ziemba

04 grudzień 2017

Podsumowanie analizy

Analiza przebiegła sprawnie bez większych problemów, jedynym ważnym problemem było zużycie pamięciowo-czasowe. Niejednokrotnie nastała potrzeba ponownego uruchomienia komputera. Istnieje dużo atrybutów wpływających na wytworzenie energii poprzez daną jednostkę fotowoltaiczną.

Kod pokazujący wykorzystane biblioteki

library('knitr')
library(ggplot2)
library(dplyr)
library(dprep)
library(plotly)
library("highcharter")
library(png)
library(grid)
library(purrr)
library(caret)
## Warning: package 'caret' was built under R version 3.4.3

Kod pozwalający wczytać dane z pliku

ladujdane <- read.csv("C:/Users/Kamila/Documents/Projekt-z-analizy-danych/elektrownie.csv")
dane <- data.frame(ladujdane)

Kod przetwarzający brakujące dane

W ramach kompletacji zbioru danych brakujące warotości uzupełniono na podstawie średniej z dostępnych danych. W niektórych atrubutach zostawiono brakujące wartości m.in. lat, lon, idmodel, day, data.

srednia = mean(dane$kwh)
dane<-mutate(dane,kwh = ifelse(kwh == 0, srednia, kwh))

srednia = mean(dane$irri_pvgis_mod)
dane<-mutate(dane,irri_pvgis_mod = ifelse(irri_pvgis_mod == 0, srednia, irri_pvgis_mod))

srednia = mean(dane$irr_pvgis_mod)
dane<-mutate(dane,irr_pvgis_mod= ifelse(irr_pvgis_mod == 0, srednia, irr_pvgis_mod))

srednia = mean(dane$pcnm15)
dane<-mutate(dane,pcnm15= ifelse(pcnm15 == 0, srednia, pcnm15))

srednia = mean(dane$pcnm14)
dane<-mutate(dane,pcnm14= ifelse(pcnm14 == 0, srednia, pcnm14))

srednia = mean(dane$pcnm13)
dane<-mutate(dane,pcnm13= ifelse(pcnm13== 0, srednia, pcnm13))

srednia = mean(dane$pcnm12)
dane<-mutate(dane,pcnm12= ifelse(pcnm12 == 0, srednia, pcnm12))

srednia = mean(dane$pcnm11)
dane<-mutate(dane,pcnm11= ifelse(pcnm11 == 0, srednia, pcnm11))

srednia = mean(dane$pcnm10)
dane<-mutate(dane,pcnm10= ifelse(pcnm10 == 0, srednia, pcnm10))

srednia = mean(dane$pcnm9)
dane<-mutate(dane,pcnm9= ifelse(pcnm9 == 0, srednia, pcnm9))

srednia = mean(dane$pcnm8)
dane<-mutate(dane,pcnm8= ifelse(pcnm8 == 0, srednia, pcnm8))

srednia = mean(dane$pcnm7)
dane<-mutate(dane,pcnm7= ifelse(pcnm7 == 0, srednia, pcnm7))

srednia = mean(dane$pcnm6)
dane<-mutate(dane,pcnm6= ifelse(pcnm6 == 0, srednia, pcnm6))

srednia = mean(dane$pcnm5)
dane<-mutate(dane,pcnm5= ifelse(pcnm5 == 0, srednia, pcnm5))

srednia = mean(dane$pcnm4)
dane<-mutate(dane,pcnm4= ifelse(pcnm4 == 0, srednia, pcnm4))

srednia = mean(dane$pcnm3)
dane<-mutate(dane,pcnm3= ifelse(pcnm3 == 0, srednia, pcnm3))

srednia = mean(dane$pcnm2)
dane<-mutate(dane,pcnm2= ifelse(pcnm2 == 0, srednia, pcnm2))

srednia = mean(dane$pcnm1)
dane<-mutate(dane,pcnm1= ifelse(pcnm1 == 0, srednia, pcnm1))

srednia = mean(dane$altitudei)
dane<-mutate(dane,altitudei= ifelse(altitudei == 0, srednia, altitudei))

srednia = mean(dane$altitude)
dane<-mutate(dane,altitude= ifelse(altitude== 0, srednia, altitude))

srednia = mean(dane$dist)
dane<-mutate(dane,dist= ifelse(dist == 0, srednia, dist))

srednia = mean(dane$cloudcoveri)
dane<-mutate(dane,cloudcoveri= ifelse(cloudcoveri == 0, srednia,cloudcoveri))

srednia = mean(dane$windbearingi)
dane<-mutate(dane,windbearingi= ifelse(windbearingi== 0, srednia,windbearingi))

srednia = mean(dane$dewpointi)
dane<-mutate(dane,dewpointi= ifelse(dewpointi == 0, srednia,dewpointi))

srednia = mean(dane$humidityi)
dane<-mutate(dane,humidityi= ifelse(humidityi == 0, srednia,humidityi))

srednia = mean(dane$cloudcover)
dane<-mutate(dane,cloudcover= ifelse(cloudcover == 0, srednia,cloudcover))

srednia = mean(dane$windbearing)
dane<-mutate(dane,windbearing= ifelse(windbearing== 0, srednia,windbearing))

srednia = mean(dane$dewpoint)
dane<-mutate(dane,dewpoint= ifelse(dewpoint == 0,srednia,dewpoint))

srednia = mean(dane$icon)
dane<-mutate(dane,icon= ifelse(icon == 0, srednia,icon))

srednia = mean(dane$humidity)
dane<-mutate(dane,humidity= ifelse(humidity == 0, srednia,humidity))

srednia = mean(dane$windspeed)
dane<-mutate(dane,windspeed= ifelse(windspeed == 0, srednia,windspeed))

srednia = mean(dane$pressure)
dane<-mutate(dane,pressure= ifelse(pressure== 0, srednia,pressure))

Sekcję podsumowująca rozmiar zbioru i podstawowe statystyki

Rozmiar zbioru liczba wierszy oraz kolumn:

## [1] 230141     51

Podstawowe statystyki:

##        id             idsito          idmodel         idbrand      
##  Min.   :     1   Min.   :0.0000   Min.   :0.000   Min.   :0.0000  
##  1st Qu.: 99880   1st Qu.:0.1000   1st Qu.:0.167   1st Qu.:0.0830  
##  Median :158870   Median :0.2250   Median :0.208   Median :0.1670  
##  Mean   :153039   Mean   :0.2153   Mean   :0.243   Mean   :0.1514  
##  3rd Qu.:217634   3rd Qu.:0.3250   3rd Qu.:0.292   3rd Qu.:0.1670  
##  Max.   :276488   Max.   :0.4250   Max.   :0.750   Max.   :0.4170  
##                                                                    
##       lat              lon          ageinmonths          anno     
##  Min.   :0.4150   Min.   :0.1540   Min.   :0.0000   Min.   :2012  
##  1st Qu.:0.4370   1st Qu.:0.6200   1st Qu.:0.0000   1st Qu.:2012  
##  Median :0.4370   Median :0.6240   Median :0.1250   Median :2012  
##  Mean   :0.4498   Mean   :0.5699   Mean   :0.3103   Mean   :2012  
##  3rd Qu.:0.4390   3rd Qu.:0.6300   3rd Qu.:0.7190   3rd Qu.:2013  
##  Max.   :0.5530   Max.   :0.6910   Max.   :1.0000   Max.   :2013  
##                                                                   
##       day              ora                     data       
##  Min.   :0.0000   Min.   :0.0000   1/1/2013 10:00:    17  
##  1st Qu.:0.2470   1st Qu.:0.2220   1/1/2013 11:00:    17  
##  Median :0.4770   Median :0.5000   1/1/2013 12:00:    17  
##  Mean   :0.4694   Mean   :0.4999   1/1/2013 13:00:    17  
##  3rd Qu.:0.6880   3rd Qu.:0.7780   1/1/2013 14:00:    17  
##  Max.   :1.0000   Max.   :1.0000   1/1/2013 15:00:    17  
##                                    (Other)       :230039  
##  temperatura_ambiente  irradiamento       pressure        windspeed      
##  Min.   :0.045        Min.   :0.0000   Min.   :0.6495   Min.   :0.00100  
##  1st Qu.:0.212        1st Qu.:0.0000   1st Qu.:0.7480   1st Qu.:0.04200  
##  Median :0.348        Median :0.0370   Median :0.7530   Median :0.06700  
##  Mean   :0.375        Mean   :0.1105   Mean   :0.7387   Mean   :0.07683  
##  3rd Qu.:0.530        3rd Qu.:0.2080   3rd Qu.:0.7550   3rd Qu.:0.10300  
##  Max.   :0.818        Max.   :0.7100   Max.   :0.7680   Max.   :0.69600  
##                                                                          
##     humidity          icon           dewpoint       windbearing    
##  Min.   :0.160   Min.   :0.0830   Min.   :0.1390   Min.   :0.0020  
##  1st Qu.:0.530   1st Qu.:0.4678   1st Qu.:0.5360   1st Qu.:0.3080  
##  Median :0.690   Median :0.6670   Median :0.6220   Median :0.4730  
##  Mean   :0.681   Mean   :0.5570   Mean   :0.6071   Mean   :0.4546  
##  3rd Qu.:0.840   3rd Qu.:0.6670   3rd Qu.:0.6840   3rd Qu.:0.6600  
##  Max.   :1.000   Max.   :0.7500   Max.   :0.8650   Max.   :0.7690  
##                                                                    
##    cloudcover         tempi             irri          pressurei        
##  Min.   :0.0100   Min.   :0.0090   Min.   :0.1080   Min.   :0.0000000  
##  1st Qu.:0.3100   1st Qu.:0.0740   1st Qu.:0.2160   1st Qu.:0.0000000  
##  Median :0.3589   Median :0.1110   Median :0.2200   Median :0.0000000  
##  Mean   :0.4162   Mean   :0.1234   Mean   :0.2221   Mean   :0.0002186  
##  3rd Qu.:0.5100   3rd Qu.:0.1270   3rd Qu.:0.2220   3rd Qu.:0.0000000  
##  Max.   :1.0000   Max.   :0.9830   Max.   :1.0000   Max.   :1.0000000  
##                                                                        
##    windspeedi        humidityi         dewpointi       windbearingi   
##  Min.   :0.00000   Min.   :0.03400   Min.   :0.0630   Min.   :0.0400  
##  1st Qu.:0.03700   1st Qu.:0.04400   1st Qu.:0.1140   1st Qu.:0.3360  
##  Median :0.03800   Median :0.04400   Median :0.1140   Median :0.3360  
##  Mean   :0.03852   Mean   :0.06383   Mean   :0.1194   Mean   :0.3456  
##  3rd Qu.:0.03900   3rd Qu.:0.06200   3rd Qu.:0.1180   3rd Qu.:0.3390  
##  Max.   :1.00000   Max.   :0.57900   Max.   :0.4150   Max.   :1.0000  
##                                                                       
##   cloudcoveri          dist             altitude         azimuth      
##  Min.   :0.0490   Min.   :0.005464   Min.   :0.1110   Min.   :0.1280  
##  1st Qu.:0.1960   1st Qu.:0.185792   1st Qu.:0.4210   1st Qu.:0.2950  
##  Median :0.1960   Median :0.448087   Median :0.5660   Median :0.4230  
##  Mean   :0.2059   Mean   :0.459202   Mean   :0.5488   Mean   :0.4542  
##  3rd Qu.:0.1980   3rd Qu.:0.704918   3rd Qu.:0.6840   3rd Qu.:0.6360  
##  Max.   :1.0000   Max.   :1.000000   Max.   :0.8840   Max.   :0.8180  
##                                                                       
##    altitudei         azimuthi          pcnm1            pcnm2       
##  Min.   :0.0080   Min.   :0.0000   Min.   :0.3750   Min.   :0.0950  
##  1st Qu.:0.0960   1st Qu.:0.2090   1st Qu.:0.3780   1st Qu.:0.2710  
##  Median :0.1370   Median :0.2900   Median :0.3790   Median :0.3770  
##  Mean   :0.2054   Mean   :0.3667   Mean   :0.4473   Mean   :0.3758  
##  3rd Qu.:0.2660   3rd Qu.:0.4860   3rd Qu.:0.3840   3rd Qu.:0.4220  
##  Max.   :0.9820   Max.   :1.0000   Max.   :1.0000   Max.   :0.9720  
##                                                                     
##      pcnm3            pcnm4            pcnm5            pcnm6       
##  Min.   :0.2850   Min.   :0.0580   Min.   :0.0410   Min.   :0.2350  
##  1st Qu.:0.5660   1st Qu.:0.4380   1st Qu.:0.4030   1st Qu.:0.3580  
##  Median :0.6050   Median :0.5310   Median :0.4270   Median :0.4930  
##  Mean   :0.6385   Mean   :0.5484   Mean   :0.4405   Mean   :0.5236  
##  3rd Qu.:0.7300   3rd Qu.:0.6340   3rd Qu.:0.4620   3rd Qu.:0.4949  
##  Max.   :1.0000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
##                                                                     
##      pcnm7            pcnm8           pcnm9            pcnm10      
##  Min.   :0.0110   Min.   :0.041   Min.   :0.0720   Min.   :0.4320  
##  1st Qu.:0.0400   1st Qu.:0.217   1st Qu.:0.5320   1st Qu.:0.6190  
##  Median :0.0600   Median :0.412   Median :0.5320   Median :0.6190  
##  Mean   :0.1203   Mean   :0.427   Mean   :0.5708   Mean   :0.6653  
##  3rd Qu.:0.1140   3rd Qu.:0.511   3rd Qu.:0.6000   3rd Qu.:0.7170  
##  Max.   :1.0000   Max.   :1.000   Max.   :1.0000   Max.   :1.0000  
##                                                                    
##      pcnm11           pcnm12          pcnm13           pcnm14      
##  Min.   :0.0640   Min.   :0.498   Min.   :0.1370   Min.   :0.3650  
##  1st Qu.:0.3120   1st Qu.:0.748   1st Qu.:0.6140   1st Qu.:0.4730  
##  Median :0.3270   Median :0.760   Median :0.6140   Median :0.4730  
##  Mean   :0.3445   Mean   :0.801   Mean   :0.6498   Mean   :0.5172  
##  3rd Qu.:0.3270   3rd Qu.:0.884   3rd Qu.:0.7380   3rd Qu.:0.5300  
##  Max.   :1.0000   Max.   :1.000   Max.   :1.0000   Max.   :1.0000  
##                                                                    
##      pcnm15       irr_pvgis_mod    irri_pvgis_mod        kwh        
##  Min.   :0.1500   Min.   :0.0010   Min.   :-0.025   Min.   :0.0010  
##  1st Qu.:0.6120   1st Qu.:0.1793   1st Qu.: 0.158   1st Qu.:0.1070  
##  Median :0.6140   Median :0.1793   Median : 0.194   Median :0.1702  
##  Mean   :0.6044   Mean   :0.2499   Mean   : 0.197   Mean   :0.2263  
##  3rd Qu.:0.6150   3rd Qu.:0.3300   3rd Qu.: 0.214   3rd Qu.:0.3350  
##  Max.   :1.0000   Max.   :1.0000   Max.   : 1.006   Max.   :1.0000  
## 

Wygląd zbioru danych oraz codebook

Idsito - id panelu, day - dzień, cloudcover - zachmurzenie, ora - godzina, anno - rok, lat, lon - współrzędne geograficzne, windspeed - prędkość wiatru, pressure - ciśnienie, humidity - wilgotność, azimuth - azymut.

Współrzędne geograficzne paneli

Panele fotowoltaiczne współrzędne geograficzne lokazlizacje:

##        lat  lon
##  [1,] 43.7 63.1
##  [2,] 43.7 62.0
##  [3,] 43.9 62.6
##  [4,] 44.0 61.2
##  [5,] 43.6 62.6
##  [6,] 55.2 15.4
##  [7,] 55.3 16.0
##  [8,] 41.5 69.1
##  [9,] 43.7 62.4
## [10,] 44.0 58.5
## [11,] 43.8 63.0
## [12,] 43.6 62.5
## [13,] 43.7 62.2
## [14,] 43.4 63.0

Mapy współrzędnych geograficznych

Po graficznej analizie współrzędnych geograficznych zauważono, że lokalizacja paneli znajduje się nie we Włoszech tylko w Uzbekistanie oraz Kazachstanie.

W ramach analizy wykorzystano https://www.wspolrzedne-gps.pl/ oraz https://www.highcharts.com/ W zbiorze danych znajduje się 14 lokalizacji.

Obszar czujników zaznaczono na mapie względem współrzędnych geograficznych.

Oraz 17 paneli fotowoltaicznych:

##  [1] 0.425 0.250 0.350 0.325 0.000 0.375 0.400 0.125 0.225 0.075 0.300
## [12] 0.150 0.200 0.050 0.025 0.275 0.100

Wykresy prezentującą zmianę wytwarzanej energii w czasie i przestrzeni oraz szczegółowa analiza wartości atrybutów

Wykres słupkowy wytwarzanej energii kwh w ciągu lat

W roku 2013 wyprodukowano więcej energii.

Wykres wytwarzania energi w przeciągu godzin.

Można zauważyć fakt, że ciągu nocy wytwarzania energii jest znacznie mniej niż podczas dnia(słońce nie świeci).

Wykres słupkowy wytwarznej energii kwh według paneli

Panel o ID równym 0.25 zdecydowanie przewyższa pozostałe, na najniższym szczeblu jest panel o ID równym 0.

Wykres słupkowy wytwarzanej energii kwh w ciągu lat dla paneli

Wykres słupkowy wytwarznej energii kwh według paneli godzinowo

Można zauważyć, że wykres posiada już więcej danych niż poprzednie, dla każdej godziny zobrazowano wytwarzanie energii dla poszczególnych paneli.

Wykres słupkowy wytwarznej energii kwh według paneli dniowo

Wykres słupkowy wytwarznej energii kwh według szerokości

Korelacja pomiędzy zmiennymi

W ramach przejrzystości i dokładnej analizy danych wykresy utworzono po 100,200,1000 rekordów danych.

Wykres wpływu wiatru i azymutu na wytwarzanie energii

Wiatr ani azymut nie wpływają na energię kwh.

Wykres wpływu wysokości i ciśnienia na pomiar energii

Wysokość nie ma znaczenia, natomiast cinienie im niższe tym niższy pomiar kwh.

Wykres wpływu wilgotności na wytwarzanie energii

Wysoka wilgotność zdecydowanie wpływa na mniejsze pobieranie energii.

Wilgotność i kwh datowy dla jednego panelu

Wykres wpływu temperatury na wytwarzanie energii

Wyższa temperatura wypływa na większe wytwarzanie energii przez panel.

Wykres wpływu zachmurzenia na wytwarzanie energii

Można zauważyć, że im większe zachmurzenie tym mniejsze wytwarzanie energii.

Analiza wpływów PCNM na wytwarzanie energii

W ramach dokładnej analizy porównawczej wszystkie 15 pcnm przedstawiono na jednym wykresie. Wystarczy “odklikać” w legendzie.

Nie zauważono dużego wpływu wartości na wytwarzanie energii. Jednakże odkryto podobieństwo pomiędzy pcnm12 i pcnm14 oraz pcnm9 i pcnm10.

Regresor przewidujący wytwarzaną energię przez każdy panel w ujęciu godzinowym (w tej sekcji należy wykorzystać wiedzę z pozostałych punktów oraz wykonać dodatkowe czynności, które mogą poprawić trafność predykcji); dobór parametrów modelu oraz oszacowanie jego skuteczności powinny zostać wykonane za pomocą techniki podziału zbioru na dane uczące, walidujące i testowe (uwaga na czas!); trafność regresji powinna zostać oszacowana na podstawie miary RMSE.

Podział zbioru

Uczenie

## note: only 1 unique complexity parameters in default grid. Truncating the grid to 1 .
## Random Forest 
## 
## 243 samples
##   2 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (15 fold, repeated 3 times) 
## Summary of sample sizes: 227, 227, 227, 227, 227, 227, ... 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   17.21626  0.9654037  12.17271
## 
## Tuning parameter 'mtry' was held constant at a value of 2

Predykcja

##         1         2         3         4         5         6         7 
## 121.32851 121.32851 123.17948 120.16857 109.82271 110.56083 120.17827 
##         8         9        10        11        12        13        14 
##  68.47001  66.80350  61.07505  75.59633  66.99660  61.86904  67.19973 
##        15        16        17        18        19        20        21 
##  73.70340  98.61442  89.91712 102.18454 161.24792 182.31441 186.85553 
##        22        23        24        25        26        27        28 
## 153.09901 245.56177 271.80209 309.34247 320.84423 331.58026 320.01563 
##        29        30        31        32        33        34        35 
## 338.89220 339.93244 297.41169 287.06289 299.84003 332.24398 320.23151 
##        36        37        38        39        40        41        42 
## 276.39187 289.03764 283.89539 299.74107 294.50769 282.28784 291.27912 
##        43        44        45        46        47        48        49 
## 231.43528 254.54568 261.35863 251.59268 256.66972 146.26129 150.73115 
##        50        51        52        53        54        55        56 
## 166.89895 184.32102 187.71074  91.14288  91.14288  92.91646  97.41826 
##        57        58        59        60        61        62        63 
##  97.30155 102.95478  97.49928  57.28898  58.91573  59.52416  58.44038 
##        64        65        66        67        68        69        70 
##  58.87553  67.41411  63.37024  59.35294 107.94690 104.62852  98.13848 
##        71        72        73        74        75        76        77 
## 118.23268 118.23268 117.33104 118.63038 121.99974 118.23268 117.33104 
##        78        79        80 
## 117.33104 118.63061 121.04589

Miara RMSE

## [1] 16.85344